home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 April: Mac OS SDK / Dev.CD Apr 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Interfaces / PInterfaces / SANE.p < prev    next >
Encoding:
Text File  |  1995-06-21  |  6.9 KB  |  263 lines  |  [TEXT/MPS ]

  1. {
  2.     File:        SANE.p
  3.  
  4.     Copyright:    © 1983-1995 by Apple Computer, Inc.
  5.                 All rights reserved.
  6.  
  7.     Version:    MPW 3.4a3 for E.T.O. #18
  8.     Created:    Monday, June 19, 1995
  9.  
  10. }
  11.  
  12. {$IFC UNDEFINED UsingIncludes}
  13. {$SETC UsingIncludes := 0}
  14. {$ENDC}
  15.  
  16. {$IFC NOT UsingIncludes}
  17.     UNIT SANE;
  18.     INTERFACE
  19. {$ENDC}
  20.  
  21. {$IFC UNDEFINED UsingSANE}
  22. {$SETC UsingSANE := 1}
  23.  
  24. {$I+}
  25. {$SETC SANEIncludes := UsingIncludes}
  26. {$SETC UsingIncludes := 1}
  27. {$IFC UNDEFINED UsingTypes}
  28. {$I Types.p}
  29. {$ENDC}
  30. {$SETC UsingIncludes := SANEIncludes}
  31.  
  32. { Elems881 mode set by -d Elems881=true on Pascal command line }
  33.  
  34. {$IFC UNDEFINED Elems881}
  35. {$SETC Elems881 = FALSE}
  36. {$ENDC}
  37.  
  38.  
  39. { The SANE interfaces can only be used for code using the Classic 68K runtime model. }
  40.  
  41. {$IFC NOT GENERATINGCFM}
  42.  
  43.  
  44. CONST
  45. {$IFC OPTION(MC68881)}
  46.  
  47. {*======================================================================*
  48.  *    The interface specific to the MC68881 SANE library    *
  49.  *======================================================================*}
  50.  
  51. Inexact = 8;
  52. DivByZero = 16;
  53. Underflow = 32;
  54. Overflow = 64;
  55. Invalid = 128;
  56. CurInex1 = 256;
  57. CurInex2 = 512;
  58. CurDivByZero = 1024;
  59. CurUnderflow = 2048;
  60. CurOverflow = 4096;
  61. CurOpError = 8192;
  62. CurSigNaN = 16384;
  63. CurBSonUnor = 32768;
  64.  
  65.  
  66. {$ELSEC}
  67.  
  68. {*======================================================================*
  69.  *    The interface specific to the software SANE library    *
  70.  *======================================================================*}
  71.  
  72. Invalid = 1;
  73. Underflow = 2;
  74. Overflow = 4;
  75. DivByZero = 8;
  76. Inexact = 16;
  77. IEEEDefaultEnv = 0;     {IEEE-default floating-point environment constant}
  78.  
  79.  
  80. {$ENDC}
  81.  
  82. {*======================================================================*
  83.  *    The common interface for the SANE library     *
  84.  *======================================================================*}
  85.  
  86. DecStrLen = 255;
  87. SigDigLen = 20;         {for 68K; use 28 in 6502 SANE}
  88.  
  89.  
  90. TYPE
  91.  
  92. RelOp = (GreaterThan,LessThan,EqualTo,Unordered);
  93.  
  94. NumClass = (SNaN,QNaN,Infinite,ZeroNum,NormalNum,DenormalNum);
  95.  
  96. RoundDir = (ToNearest,Upward,Downward,TowardZero);
  97.  
  98. RoundPre = (ExtPrecision,DblPrecision,RealPrecision);
  99.  
  100. DecimalKind = (FloatDecimal,FixedDecimal);
  101.  
  102. {$IFC OPTION(MC68881)}
  103.  
  104. {*======================================================================*
  105.  *    The interface specific to the MC68881 SANE library    *
  106.  *======================================================================*}
  107. Exception = LONGINT;
  108.  
  109. Environment = RECORD
  110.     FPCR: LONGINT;
  111.     FPSR: LONGINT;
  112.     END;
  113.  
  114. TrapVector = RECORD
  115.     Unordered: LONGINT;
  116.     Inexact: LONGINT;
  117.     DivByZero: LONGINT;
  118.     Underflow: LONGINT;
  119.     OpError: LONGINT;
  120.     Overflow: LONGINT;
  121.     SigNaN: LONGINT;
  122.     END;
  123.  
  124. {$ELSEC}
  125.  
  126. {*======================================================================*
  127. *  The interface specific to the software SANE library      *
  128. *======================================================================*}
  129.  
  130. Exception = INTEGER;
  131.  
  132. Environment = INTEGER;
  133.  
  134. { Extended96 = ARRAY [0..5] OF INTEGER;    Now defined in Types.p }
  135.  
  136. MiscHaltInfo = RECORD
  137.     HaltExceptions: INTEGER;
  138.     PendingCCR: INTEGER;
  139.     PendingD0: LONGINT;
  140.     END;
  141.  
  142. {$ENDC}
  143.  
  144. {*======================================================================*
  145. *  The common interface for the SANE library    *
  146. *======================================================================*}
  147.  
  148. DecStr = STRING[DecStrLen];
  149.  
  150. DecForm = RECORD
  151.     style: DecimalKind;
  152.     digits: INTEGER;
  153.     END;
  154.  
  155. Decimal = RECORD
  156.     sgn: 0..1;
  157.     exp: INTEGER;
  158.     sig: STRING[SigDigLen];
  159.     END;
  160.  
  161. CStrPtr = ^CHAR;
  162.  
  163.  
  164.  
  165. {$IFC OPTION(MC68881)}
  166.  
  167. { return IEEE default environment }
  168. FUNCTION IEEEDefaultEnv: environment;
  169. PROCEDURE SetTrapVector(Traps: trapvector);
  170. PROCEDURE GetTrapVector(VAR Traps: trapvector);
  171. FUNCTION X96toX80(x: Extended): extended80;
  172. FUNCTION X80toX96(x: extended80): Extended;
  173. {$IFC Elems881 = false}
  174.  
  175. { sine }FUNCTION Sin(x: Extended): Extended;
  176. FUNCTION Cos(x: Extended): Extended;
  177. FUNCTION ArcTan(x: Extended): Extended;
  178. FUNCTION Exp(x: Extended): Extended;
  179. FUNCTION Ln(x: Extended): Extended;
  180. FUNCTION Log2(x: Extended): Extended;
  181. FUNCTION Ln1(x: Extended): Extended;
  182. FUNCTION Exp2(x: Extended): Extended;
  183. FUNCTION Exp1(x: Extended): Extended;
  184. FUNCTION Tan(x: Extended): Extended;
  185. {$ENDC}
  186.  
  187. {$ELSEC}
  188.  
  189. { return halt vector }FUNCTION GetHaltVector: LONGINT;
  190. PROCEDURE SetHaltVector(v: LONGINT);
  191. FUNCTION X96toX80(x: Extended96): Extended;
  192. FUNCTION X80toX96(x: Extended): Extended96;
  193. FUNCTION Log2(x: Extended): Extended;
  194. FUNCTION Ln1(x: Extended): Extended;
  195. FUNCTION Exp2(x: Extended): Extended;
  196. FUNCTION Exp1(x: Extended): Extended;
  197. FUNCTION Tan(x: Extended): Extended;
  198. {$ENDC}
  199.  
  200.  
  201. {*======================================================================*
  202. *  The common interface for the SANE library    *
  203. *======================================================================*}
  204.  
  205. {---------------------------------------------------
  206. * Conversions between numeric binary types.
  207. ---------------------------------------------------}
  208.  
  209. FUNCTION Num2Integer(x: Extended): INTEGER;
  210. FUNCTION Num2Longint(x: Extended): LONGINT;
  211. FUNCTION Num2Real(x: Extended): real;
  212. FUNCTION Num2Double(x: Extended): DOUBLE;
  213. FUNCTION Num2Extended(x: Extended): Extended;
  214. FUNCTION Num2Comp(x: Extended): Comp;
  215. PROCEDURE Num2Dec(f: decform;x: Extended;VAR d: decimal);
  216. FUNCTION Dec2Num(d: decimal): Extended;
  217. PROCEDURE Num2Str(f: decform;x: Extended;VAR s: DecStr);
  218. FUNCTION Str2Num(s: DecStr): Extended;
  219. PROCEDURE Str2Dec(s: DecStr;VAR Index: INTEGER;VAR d: decimal;VAR ValidPrefix: BOOLEAN);
  220. PROCEDURE CStr2Dec(s: CStrPtr;VAR Index: INTEGER;VAR d: decimal;VAR ValidPrefix: BOOLEAN);
  221. PROCEDURE Dec2Str(f: decform;d: decimal;VAR s: DecStr);
  222. FUNCTION Remainder(x: Extended;y: Extended;VAR quo: INTEGER): Extended;
  223. FUNCTION Rint(x: Extended): Extended;
  224. FUNCTION Scalb(n: INTEGER;x: Extended): Extended;
  225. FUNCTION Logb(x: Extended): Extended;
  226. FUNCTION CopySign(x: Extended;y: Extended): Extended;
  227. FUNCTION NextReal(x: real;y: real): real;
  228. FUNCTION NextDouble(x: DOUBLE;y: DOUBLE): DOUBLE;
  229. FUNCTION NextExtended(x: Extended;y: Extended): Extended;
  230. FUNCTION XpwrI(x: Extended;i: INTEGER): Extended;
  231. FUNCTION XpwrY(x: Extended;y: Extended): Extended;
  232. FUNCTION Compound(r: Extended;n: Extended): Extended;
  233. FUNCTION Annuity(r: Extended;n: Extended): Extended;
  234. FUNCTION RandomX(VAR x: Extended): Extended;
  235. FUNCTION ClassReal(x: real): NumClass;
  236. FUNCTION ClassDouble(x: DOUBLE): NumClass;
  237. FUNCTION ClassComp(x: Comp): NumClass;
  238. FUNCTION ClassExtended(x: Extended): NumClass;
  239. FUNCTION SignNum(x: Extended): INTEGER;
  240. FUNCTION NAN(i: INTEGER): Extended;
  241. PROCEDURE SetException(e: Exception;b: BOOLEAN);
  242. FUNCTION TestException(e: Exception): BOOLEAN;
  243. PROCEDURE SetHalt(e: Exception;b: BOOLEAN);
  244. FUNCTION TestHalt(e: Exception): BOOLEAN;
  245. PROCEDURE SetRound(r: RoundDir);
  246. FUNCTION GetRound: RoundDir;
  247. PROCEDURE SetPrecision(p: RoundPre);
  248. FUNCTION GetPrecision: RoundPre;
  249. PROCEDURE SetEnvironment(e: environment);
  250. PROCEDURE GetEnvironment(VAR e: environment);
  251. PROCEDURE ProcEntry(VAR e: environment);
  252. PROCEDURE ProcExit(e: environment);
  253. FUNCTION Relation(x: Extended;y: Extended): RelOp;
  254.  
  255. {$ENDC}        { GENERATINGCFM }
  256.  
  257. {$ENDC}    { UsingSANE }
  258.  
  259. {$IFC NOT UsingIncludes}
  260.     END.
  261. {$ENDC}
  262.  
  263.